// UTF-8 encoded

//#include <QtGui>
#include <QApplication>
#include <QtScript>
#include <QString>

#include <QtCore>
#include <QCoreApplication>

#include <QtGui>
#include <QApplication>

#include <QtDebug>
#include <QtScript>

#include "./classes/t_QDroid.h"
#include "./version.h"


#ifdef __TIME__
#define BUILDTIME __TIME__
#else
#define BUILDTIME .
#endif


#ifdef __DATE__
#define BUILDDATE __DATE__
#else
#define BUILDDATE .
#endif

/*
        LibQDroid
*/



// а это не обязательно, но если мы хотим перенаправить qDebug в файл - это надо включить один раз в корневом файле...
#include "classes/qDebugRedirect.h"



//------------------------------------

// далее некоторые глобальные объявления что бы "не потерять" объекты
/*

*/

extern "C"
   {
 //   int argc=0;
 //    char** argv=NULL;

    int value= 0;
    QString logFileName="";
    //QStringList argList; //список параметров для вызова через init_empty() без параметров.
    t_QDroid *DroidHiveQueen=0;
    QString qdLibVersionString="qdlib_verion_2010.06.23_1230";

    //-----------------------------------------------------------------------
	/*тестовые функции*/
        qint32 get_counter();

    //-----------------------------------------------------------------------
        QString setLogFile(QString _logFileName);
        QString getVersion();//qdLibVersionString
    //-----------------------------------------------------------------------
        int init();// просто проинициировать без запуска или анализа чего
        QVariant init_run(QStringList comandPromptArgList, QObject *_context=0); // то что приведет к вызову
                //comandPromptArgList - список аргументов командной строки как будто при вызове из командной строки.

        qint32 set_argList( QStringList _argList);
        //script_to_execute - todo?
        t_QDroid *getDroidHiveQueen();// отдать или создать объект-улей дронов (ботов). собственно это и есть ключевой объект фреймворка
        QScriptEngine *getQScriptEngine();//++2010.05.24 не хорошая функция.. не нравится мне выдвать ядро наружу...
        bool set_doQuitOnErrors(bool newVar); //если выставить в true то мы будем пытаться завершить весь QApplication при ошибках

        //-----------------------------------------------------------------------
        /*расширенные функции для загрузки-обработки скриптов*/
        int loadNewScript(QString _fileName );//++2010.06.24 загрузить скрипт из файла
        QStringList getLoadedScript();//++2010.06.24 вернуть имя скрипта
        QScriptValue runScript(QStringList _source, QObject* _context);//++2010.06.24 выполнить скрипт
        QScriptValue runScript_short(QString _source, QObject* _context);//++2010.06.24 выполнить скрипт

        //-----------------------------------------------------------------------
        /*Работа с переменными среды*/
        QScriptValue setScriptObjectVar(QString _name, QObject* _object);//++2010.07.06
        QScriptValue setScriptVar(QString _name, QString _value);//++2010.07.06
        /*new*/ QScriptValue getScriptVar(QString _name);//++2011.02.22


        //-----------------------------------------------------------------------
        /*Экспорт механизма плагинов*/
        // загрузить расширение с заданным именем
        /*new*/ QScriptValue loadExtention(QString _extentionName);//++2011.02.22
        //// выгрузить расширение с заданным именем
        ///*new*/ QScriptValue unLoadExtention(QString _extentionName);//++2011.02.22
        //вернуть объект по заданному имени класса (тому же имени что и в скрипте)
        /*new*/ QScriptValue createNewObjectByClassName(QString _className);//++2011.02.22


   }

/*общая инициализация, перехват дебагмсг и т.п. ... надо будет убрать потом*/
